package com.lmx.common.constants;

/**
 * Common常量
 */
public interface ICommonConstants {

	/**
	 * 呼叫方向 direction
	 */
	public static enum DIRECTION {
		DEF {
			@Override
			public String label() {
				return "无效";
			}
		},
		CALLIN {
			@Override
			public String label() {
				return "呼入";
			}
		},
		CALLOUT {
			@Override
			public String label() {
				return "呼出";
			}
		};
		public abstract String label();
	}

	/**
	 * 性别
	 */
	public static enum GENDER {
		DEF {
			@Override
			public String label() {
				return "不限/无效";
			}
		},
		MALE {
			@Override
			public String label() {
				return "男";
			}
		},
		FEMALE {
			@Override
			public String label() {
				return "女";
			}
		};
		public abstract String label();
	}

	/**
	 * 注册失败原因
	 */
	public static enum REGFAILCAUSE {
		AUTHCODEFAIL {
			@Override
			public String label() {
				return "验证码验证失败";
			}
		},
		ALREADYEXIST {
			@Override
			public String label() {
				return "该用户已存在";
			}
		},
		OTHERFAIL {
			@Override
			public String label() {
				return "其他原因";
			}
		};
		public abstract String label();
	}

	/**
	 * 重置密码失败原因
	 */
	public static enum RESETFAILCAUSE {
		AUTHCODEFAIL {
			@Override
			public String label() {
				return "验证码验证失败";
			}
		},
		NOTEXIST {
			@Override
			public String label() {
				return "不存在此用户";
			}
		},
		OTHERFAIL {
			@Override
			public String label() {
				return "其他原因";
			}
		};
		public abstract String label();
	}

	/**
	 * 修改密码失败原因
	 */
	public static enum MODIFYPASSWORDCAUSE {
		OLDPASSWORDERRO {
			@Override
			public String label() {
				return "旧密码错误";
			}
		},
		OTHERFAIL {
			@Override
			public String label() {
				return "其他原因";
			}
		};
		public abstract String label();
	}

	/**
	 * 通话失败原因
	 */
	public static enum CALLFAILCAUSE {
		OTHERFAIL {
			@Override
			public String label() {
				return "其他原因";
			}
		};
		public abstract String label();
	}

	/**
	 * 接口错误code 通用错误
	 */
	public static enum INTERFACEERRO {
		NOINTERFACE {
			@Override
			public String label() {
				return "接口不存在";
			}
		},
		OTHERFAIL {
			@Override
			public String label() {
				return "其他原因";
			}
		};
		public abstract String label();
	}

	/**
	 * 签到情况
	 */
	public static enum SIGNSTATUS {
		NOTSIGN {
			@Override
			public String label() {
				return "未签到";
			}
		},
		ALREADYSIGNED {
			@Override
			public String label() {
				return "已签到";
			}
		};
		public abstract String label();
	}

	/**
	 * 运行状态
	 */
	public static enum RUNSTATUS {
		NOTSTARTED {
			@Override
			public String label() {
				return "未开始";
			}
		},
		HASBEGUN {
			@Override
			public String label() {
				return "已开始";
			}
		};
		public abstract String label();
	}

	/**
	 * 签到类型
	 */
	public static enum SIGNTYPE {
		SIGNIN {
			@Override
			public String label() {
				return "签入";
			}
		},
		SIGNOUT {
			@Override
			public String label() {
				return "签出";
			}
		};
		public abstract String label();
	}

	/**
	 * 消息类型
	 */
	public static enum MESSAGETYPE {
		DEF {
			@Override
			public String label() {
				return "无效";
			}
		},
		MAIL {
			@Override
			public String label() {
				return "站内信";
			}
		},
		REMIND {
			@Override
			public String label() {
				return "提醒";
			}
		},
		CALL {
			@Override
			public String label() {
				return "电话";
			}
		};
		public abstract String label();
	}

	/**
	 * 提醒详细类型
	 */
	public static enum REMINDDETAILTYPE {
		DEF {
			@Override
			public String label() {
				return "无效";
			}
		},
		TASKREMIND {
			@Override
			public String label() {
				return "任务提醒";
			}
		},
		SIGN {
			@Override
			public String label() {
				return "签到提醒";
			}
		},
		USERRECORE {
			@Override
			public String label() {
				return "用户审核提醒";
			}
		},
		PAYRECORE {
			@Override
			public String label() {
				return "支付提醒";
			}
		},
		WECHATBIND {
			@Override
			public String label() {
				return "微信绑定提醒";
			}
		},
		WORKORDER {
			@Override
			public String label() {
				return "工单提醒";
			}
		},
		HEALTHINFO {
			@Override
			public String label() {
				return "健康数据提醒";
			}
		},
		LOCATIONINFO {
			@Override
			public String label() {
				return "位置数据提醒";
			}
		},
		LEAVEBEDCALL {
			@Override
			public String label() {
				return "离床提醒";
			}
		},
		HEARTRATECALL {
			@Override
			public String label() {
				return "心率骤降";
			}
		},
		HBEACONCALL {
			@Override
			public String label() {
				return "华米按键呼叫";
			}
		};
		public abstract String label();
	}

	/**
	 * 通话提醒详细类型
	 */
	public static enum CALLDETAILTYPE {
		DEF {
			@Override
			public String label() {
				return "无效";
			}
		},
		CALLWAIT {
			@Override
			public String label() {
				return "等待接听";
			}
		},
		CALLINBUSY {
			@Override
			public String label() {
				return "通话中";
			}
		},
		CALLEND {
			@Override
			public String label() {
				return "通话结束";
			}
		},
		CALLLOST {
			@Override
			public String label() {
				return "未接通";
			}
		},
		CALLDIALING {
			@Override
			public String label() {
				return "拨号中";
			}
		},
		CALLFAILURE {
			@Override
			public String label() {
				return "通话失败";
			}
		};
		public abstract String label();
	}

	/**
	 * 支付类型
	 */
	public static enum PAYTYPE {
		DEF {
			@Override
			public String label() {
				return "无效";
			}
		},
		RECHARGE {
			@Override
			public String label() {
				return "充值";
			}
		},
		WITHDRAW {
			@Override
			public String label() {
				return "提现";
			}
		};
		public abstract String label();
	}

	/**
	 * 支付状态
	 */
	public static enum PAYSTATUS {
		APPLY {
			@Override
			public String label() {
				return "正在处理";
			}
		},
		SUCC {
			@Override
			public String label() {
				return "支付完成";
			}
		},
		FAIL {
			@Override
			public String label() {
				return "支付失败";
			}
		},
		NOPAY {
			@Override
			public String label() {
				return "未支付";
			}
		};
		public abstract String label();
	}

	/**
	 * 支付(账户)类别
	 */
	public static enum ACCOUNTTYPE {
		DEF {
			@Override
			public String label() {
				return "";
			}
		},
		WEI {
			@Override
			public String label() {
				return "微信";
			}
		},
		ALIPAY {
			@Override
			public String label() {
				return "支付宝";
			}
		},
		BANKCARD {
			@Override
			public String label() {
				return "银行卡";
			}
		};
		public abstract String label();
	}

	/**
	 * 身份认证
	 */
	public static enum IDCERTIFICATION {
		FORBIDDEN {
			@Override
			public String label() {
				return "禁用";
			}
		},
		NOTAPPLYCERTIFY {
			@Override
			public String label() {
				return "未申请认证";
			}
		},
		HASAPPLIEDCERTIFY {
			@Override
			public String label() {
				return "已申请认证";
			}
		},
		CERTIFYSUCCESS {
			@Override
			public String label() {
				return "身份认证成功";
			}
		},
		CERTIFYFAILURE {
			@Override
			public String label() {
				return "身份认证失败";
			}
		};
		public abstract String label();
	}

	/**
	 * 号码状态（是否可用）
	 */
	public static enum IMSSTATUS {
		USABLE {
			@Override
			public String label() {
				return "可用";
			}
		},
		NOTUSABLE {
			@Override
			public String label() {
				return "不可用";
			}
		};
		public abstract String label();
	}

	/**
	 * 号码状态（华为）
	 */
	public static enum IMSSTATUSHUAWEI {
		FREE {
			@Override
			public String label() {
				return "空闲";
			}
		},
		INUSE {
			@Override
			public String label() {
				return "在用";
			}
		},
		DEL {
			@Override
			public String label() {
				return "预删除";
			}
		};
		public abstract String label();
	}

	/**
	 * 号码状态（是否购买套餐）
	 */
	public static enum IMSISBUY {
		FALSE {
			@Override
			public String label() {
				return "未购买";
			}
		},
		TRUE {
			@Override
			public String label() {
				return "已购买";
			}
		};
		public abstract String label();
	}

	/**
	 * 微信绑定状态
	 */
	public static enum BINDSTATUS {
		FALSE {
			@Override
			public String label() {
				return "未绑定";
			}
		},
		TRUE {
			@Override
			public String label() {
				return "已绑定";
			}
		};
		public abstract String label();
	}

	/**
	 * 是否已读
	 */
	public static enum HASREAD {
		FALSE {
			@Override
			public String label() {
				return "未读";
			}
		},
		TRUE {
			@Override
			public String label() {
				return "已读";
			}
		};
		public abstract String label();
	}

	/**
	 * 支付渠道
	 */
	public static enum PAYCHANNEL {
		DEF {
			@Override
			public String label() {
				return "无效";
			}
		},
		WEIXIN {
			@Override
			public String label() {
				return "微信";
			}
		},
		ZHIFUBAO {
			@Override
			public String label() {
				return "支付宝";
			}
		},
		CARD {
			@Override
			public String label() {
				return "银行卡";
			}
		};
		public abstract String label();
	}

	/**
	 * 结算方式
	 */
	public static enum SETTLEACCOUNTWAY {
		REALTIME {
			@Override
			public String label() {
				return "实时结算";
			}
		},
		AFTERTIME {
			@Override
			public String label() {
				return "任务结束后结算";
			}
		};
		public abstract String label();
	}

	/**
	 * 是否已分配
	 */
	public static enum ISALLOCATED {
		FALSE {
			@Override
			public String label() {
				return "未分配";
			}
		},
		TRUE {
			@Override
			public String label() {
				return "已分配";
			}
		};
		public abstract String label();
	}

	/**
	 * 完成状态
	 */
	public static enum COMPLETIONSTATUS {
		FALSE {
			@Override
			public String label() {
				return "未完成";
			}
		},
		TRUE {
			@Override
			public String label() {
				return "已完成";
			}
		};
		public abstract String label();
	}

	/**
	 * 成单状态
	 */
	public static enum WORKORDERSTATUS {
		NOT {
			@Override
			public String label() {
				return "未成单";
			}
		},
		APPLY {
			@Override
			public String label() {
				return "待确认";
			}
		},
		CONFIRM {
			@Override
			public String label() {
				return "确认成单";
			}
		},
		FROZEN {
			@Override
			public String label() {
				return "已冻结";
			}
		};
		public abstract String label();
	}

	/**
	 * 解冻方式
	 */
	public static enum THAWTYPE {
		NOT {
			@Override
			public String label() {
				return "无效";
			}
		},
		COM {
			@Override
			public String label() {
				return "企业解冻";
			}
		},
		BACK {
			@Override
			public String label() {
				return "运营解冻";
			}
		};
		public abstract String label();
	}

	/**
	 * boolean
	 */
	public static enum BOOLEAN {
		FALSE {
			@Override
			public String label() {
				return "否";
			}
		},
		TRUE {
			@Override
			public String label() {
				return "是";
			}
		};
		public abstract String label();
	}

	/**
	 * @author ytche 工作状态
	 */
	public static enum STAFFSTATUS {
		IN {
			@Override
			public String lable() {
				return "staffStatusIn";
			}
		},
		LEAVE {
			@Override
			public String lable() {
				return "staffStatusLeave";
			}
		};
		public abstract String lable();
	}

	public static enum SCHEMEERROR {
		TYPE_NULL {
			@Override
			public String lable() {
				return "1";
			}
		},
		CUSTOMER_NULL {
			@Override
			public String lable() {
				return "2";
			}
		};
		public abstract String lable();
	}

	/**
	 * 健康分析错误码
	 *
	 * @author ytche
	 * @date 2017年5月5日
	 *
	 */
	public static enum HEALTH_ANALUSIS_ERROR {
		CUSTOMER_NULL {
			@Override
			public String lable() {
				return "1";
			}
		};
		public abstract String lable();
	}

	/**
	 * 活动计划错误码
	 *
	 * @author ytche
	 * @date 2017年5月5日
	 *
	 */
	public static enum ACTIVITY_PLAN_ERROR {
		PLAN_EXIST {
			@Override
			public String lable() {
				return "1";
			}
		};
		public abstract String lable();
	}

	/**
	 * excel导出错误码
	 *
	 * @author ytche
	 * @date 2017年5月5日
	 *
	 */
	public static enum EXPORT_ERROR {
		CLASS_NAME_NULL {
			@Override
			public String lable() {
				return "1";
			}
		},
		COLUMN_NUM_NULL {
			@Override
			public String lable() {
				return "2";
			}
		},
		URL_NULL {
			@Override
			public String lable() {
				return "3";
			}
		},
		DATA_MISS {
			@Override
			public String lable() {
				return "4";
			}
		};

		public abstract String lable();
	}

	public static enum UPLOAD_ERROR {
		NAME_MUL_DOT {
			@Override
			public String label() {
				return "1";
			}

		};

		public abstract String label();
	}

	public static enum COMMON_STATUS {
		YES {
			@Override
			public Integer label() {
				return 1;
			}

		},
		NO {
			@Override
			public Integer label() {
				return 0;
			}

		};
		public abstract Integer label();
	}

	/**
	 * 运营人员的tenantId
	 */
	public static Long ADMIN_TENANT_ID = 111L;
	/**
	 * 运营人员账号范围(1000是公司运营人员的,1000以上是客户)
	 */
	public static Long ADMIN_TENANT_ID_THRESHOLD = 1000L;
	public static Short DEL_STATUS_YES_1 = 1;
	public static Short DEL_STATUS_NO_0 = 0;
	/**
	 * 菜单-机构
	 */
	public static Integer SYSTEM_TYPE_JIGOU_1 = 1;
	/**
	 * 菜单-居家
	 */
	public static Integer SYSTEM_TYPE_JUJIA_2 = 2;

	/**
	 * 设备判断间隔
	 */
	public static Integer DEVICE_STATUS_FLAG = 180;
	/**
	 * 导出excel存放位置在property文件中的变量名称
	 */
	public static String EXPORT_PATH = "excel.export.path";

	/**
	 * 导出excel对应url在property文件中的变量名称
	 */
	public static String EXPOER_URL = "excel.export.url";
	/**
	 * 默认密码
	 */
	public static String DEFALUT_PASSCODE = "123456";
	/**
	 * 公众号角色id
	 */
	public static Long ROLE_ID_PUBLIC = 36L;
	/**
	 * 职工状态 启用
	 */
	public static Long DIC_ID_STAFF_STATUS_ON = 461L;
	/**
	 * 缩略图宽度
	 */
	public static int THUMBNAIL_WIDTH = 100;

}
